package com.transer.persistance.dao;

import java.util.List;
import java.util.Map;

import com.transer.persistance.bean.ProfileLanguage;
import com.transer.persistance.bean.User;
import com.transer.persistance.exception.TranserDatabaseException;
import com.transer.web.page.TranserPageData;

public interface IUserDao extends DatabaseDao {
	/**
	 * 删除语言对
	 * 
	 * @param userid
	 *            用户ID
	 * @param id
	 *            语言对ID
	 * @throws TranserDatabaseException
	 */
	void deleteLanguagePair(int userid, int id) throws TranserDatabaseException;

	/**
	 * 添加语言对
	 * 
	 * @param pair
	 *            语言对
	 * @return 语言对ID
	 * @throws TranserDatabaseException
	 */
	int addLanguagePair(ProfileLanguage pair) throws TranserDatabaseException;

	/**
	 * 获取用户语言配对信息
	 * 
	 * @param userid
	 *            用户ID
	 * @return 语言配对列表
	 * @throws TranserDatabaseException
	 */
	List<ProfileLanguage> getProfileLanguages(int userid) throws TranserDatabaseException;

	/**
	 * 登陆用户中心
	 * 
	 * @param email
	 *            登陆名
	 * @return 用户信息
	 * @throws TranserDatabaseException
	 */
	User loginPassport(String email) throws TranserDatabaseException;

	/**
	 * 查找用户
	 * 
	 * @param params
	 *            参数
	 * @param skipResults
	 *            忽略数据数目
	 * @param maxResults
	 *            最大数据数目
	 * @return 用户
	 * @throws TranserDatabaseException
	 */
	List<TranserPageData> findUsers(Map<String, Object> params, int skipResults, int maxResults) throws TranserDatabaseException;

	/**
	 * 查找用户
	 * 
	 * @param params
	 *            参数
	 * @return 用户数量
	 * @throws TranserDatabaseException
	 */
	int findUserSize(Map<String, Object> params) throws TranserDatabaseException;

	/**
	 * 检查EMAIL是否存在
	 * 
	 * @param email
	 * @return
	 */
	User isEmailExsit(String email) throws TranserDatabaseException;

	/**
	 * 根据用户ID查找用户
	 * 
	 * @param id
	 *            ID
	 * @return 用户
	 * @throws TranserDatabaseException
	 */
	User getUserByID(int id) throws TranserDatabaseException;

	/**
	 * 根据昵称获取用户
	 * 
	 * @param nikeName
	 * @return
	 * @throws TranserDatabaseException
	 */
	boolean isNikeNameExsit(String nikeName) throws TranserDatabaseException;

	/**
	 * 添加用户资料
	 * 
	 * @param user
	 *            用户资料
	 */
	void addUser(User user) throws TranserDatabaseException;

	/**
	 * 修改资料
	 * 
	 * @param user
	 *            用户资料
	 */
	void updateUser(User user) throws TranserDatabaseException;
}
